export default function compose(...funcs) {
  if(funcs.length === 0) {
    return args => args
  }

  if(funcs.length === 1) {
    return funcs[0]
  }
  /**
   * array.reduce(function(total, currentValue, currentIndex, arr), initialValue) 可作为累加器
   * 把 [A, B, C] 转换成 A(B(C(next))) 方法组合
   *  */
  return funcs.reduce((a, b) => (...args) => a(b(...args)))
}